﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Collections.Generic;
using com.pro2e.console.core.valueobject;
using System.Collections;

/// <summary>
/// LoginUser 的摘要描述
/// </summary>
/// 
namespace com.pro2e.console.service.auth.vo 
{
    [Serializable]
    public class LoginUser 
    {
        public LoginUser()
        {
            IsAlive = 1;
        }
        /// <summary>
        /// pkey
        /// </summary>
        public virtual int EmployeeNo { get; set; }

        /// <summary>
        /// 中文姓名
        /// </summary>
        public virtual string FullNameInChinese { get; set; }

        /// <summary>
        /// 英文姓名
        /// </summary>
        public virtual string FullNameInEnglish { get; set; }


        /// <summary>
        /// 性別
        /// </summary>
        public virtual string Sex { get; set; }

        /// <summary>
        /// 聯絡地址
        /// </summary>
        public virtual string ContactAddress { get; set; }

        /// <summary>
        /// 聯絡郵遞區號
        /// </summary>
        public virtual string ContactZipCode { get; set; }

        /// <summary>
        /// 住家電話區碼
        /// </summary>
        public virtual string HousePhoneAreaCode { get; set; }

        /// <summary>
        /// 住家電話
        /// </summary>
        public virtual string HousePhone { get; set; }

        /// <summary>
        /// 住家其他電話
        /// </summary>
        public virtual string HouseOtherPhone { get; set; }

        /// <summary>
        /// Email Address
        /// </summary>
        public virtual string Email { get; set; }

        /// <summary>
        /// 身份證號
        /// </summary>
        public virtual string SSID { get; set; }

        /// <summary>
        /// 生日
        /// </summary>
        public virtual DateTime? Birthday { get; set; }

        /// <summary>
        /// 身高(cm)
        /// </summary>
        public virtual int Height { get; set; }
        /// <summary>
        /// 體重(kg)
        /// </summary>
        public virtual int Weight { get; set; }

        /// <summary>
        /// 血型(O型、A型、B型、AB型)
        /// </summary>
        public virtual string Blood { get; set; }

        /// <summary>
        /// 職稱
        /// </summary>
        public virtual string JobTitle { get; set; }

        /// <summary>
        /// 手機電話
        /// </summary>
        public virtual string Mobile { get; set; }

        /// <summary>
        /// (到職日)開始日期
        /// </summary>
        public virtual DateTime? ArrivedDate { get; set; }

        /// <summary>
        /// (離職日)結束日期
        /// </summary>
        public virtual DateTime? LeaveDate { get; set; }

        /// <summary>
        /// 緊急聯絡人
        /// </summary>
        public virtual string EmergencyContactPerson { get; set; }
        /// <summary>
        /// 與緊急聯絡人關係
        /// </summary>
        public virtual string EmergencyRelationship { get; set; }
        /// <summary>
        /// 與緊急聯絡人電話
        /// </summary>
        public virtual string EmergencyPhone { get; set; }
        /// <summary>
        /// 與緊急聯絡人電話
        /// </summary>
        public virtual string EmergencyAddress { get; set; }
        /// <summary>
        /// CreatedBy
        /// </summary>
        public virtual string CreatedBy { get; set; }

        /// <summary>
        /// CreatedDate
        /// </summary>
        public virtual DateTime? CreatedDate { get; set; }

        /// <summary>
        /// UpdatedBy
        /// </summary>
        public virtual string UpdatedBy { get; set; }

        /// <summary>
        /// UpdatedDate
        /// </summary>
        public virtual DateTime? UpdatedDate { get; set; }


        /// <summary>
        /// 是否在職
        /// </summary>
        public virtual int IsAlive { get; set; }
         /// <summary>
        /// 帳號是否啟用
        /// </summary>
        public virtual bool IsApproved { get; set; }
        
        //private int id;
        private IList<LoginRole> belongRoles;

        private string userId;
        private string password;
       
        private string comment;
        private int version;
       

        //以下未與hinberante 關聯
        private int passwordFormat = 0;
        private string passwordSalt;
        private string mobilePIN;

        
        private string loweredEmail;
        private string passwordQuestion;
        private string passwordAnswer;
        private bool isApproved;
        private bool isLockedOut;
        private DateTime createDate;
        private DateTime lastLoginDate;
        private DateTime lastPasswordChangedDate;
        private DateTime lastLockoutDate;
        private int failedPasswordAttemptCount;
        private DateTime failedPasswordAttemptWindowStart;
        private int failedPasswordAnswerAttemptCount;
        private DateTime failedPasswordAnswerAttemptWindowStart;
        



        public virtual string UserId
        {
            get { return userId; }
            set { userId = value; }
        }



        public virtual string Password
        {
            get { return password; }
            set { password = value; }
        }

        public virtual int PasswordFormat
        {
            get { return passwordFormat; }
            set { passwordFormat = value; }
        }

        public virtual string PasswordSalt
        {
            get { return passwordSalt; }
            set { passwordSalt = value; }
        }

        public virtual string MobilePIN
        {
            get { return mobilePIN; }
            set { mobilePIN = value; }
        }


        public virtual string LoweredEmail
        {
            get { return loweredEmail; }
            set { loweredEmail = value; }
        }

        public virtual string PasswordQuestion
        {
            get { return passwordQuestion; }
            set { passwordQuestion = value; }
        }

        public virtual string PasswordAnswer
        {
            get { return passwordAnswer; }
            set { passwordAnswer = value; }
        }


        public virtual bool IsLockedOut
        {
            get { return isLockedOut; }
            set { isLockedOut = value; }
        }

        public virtual DateTime CreateDate
        {
            get { return createDate; }
            set { createDate = value; }
        }

        public virtual DateTime LastLoginDate
        {
            get { return lastLoginDate; }
            set { lastLoginDate = value; }
        }

        public virtual DateTime LastPasswordChangedDate
        {
            get { return lastPasswordChangedDate; }
            set { lastPasswordChangedDate = value; }
        }

        public virtual DateTime LastLockoutDate
        {
            get { return lastLockoutDate; }
            set { lastLockoutDate = value; }
        }

        public virtual int FailedPasswordAttemptCount
        {
            get { return failedPasswordAttemptCount; }
            set { failedPasswordAttemptCount = value; }
        }

        public virtual DateTime FailedPasswordAttemptWindowStart
        {
            get { return failedPasswordAttemptWindowStart; }
            set { failedPasswordAttemptWindowStart = value; }
        }

        public virtual int FailedPasswordAnswerAttemptCount
        {
            get { return failedPasswordAnswerAttemptCount; }
            set { failedPasswordAnswerAttemptCount = value; }
        }

        public virtual DateTime FailedPasswordAnswerAttemptWindowStart
        {
            get { return failedPasswordAnswerAttemptWindowStart; }
            set { failedPasswordAnswerAttemptWindowStart = value; }
        }

        public virtual string Comment
        {
            get { return comment; }
            set { comment = value; }
        }


        public virtual IList<LoginRole> BelongRoles 
        {
            get { return belongRoles; }
            set { belongRoles = value; }

        }

        public virtual int Version
        {
            get { return version; }
            set { version = value; }
        }

    
   }
}